package xx.iverson.listening_manager.service;

import org.springframework.web.multipart.MultipartFile;
import xx.iverson.listening_manager.entity.AudioFile;
import xx.iverson.listening_manager.result.ReturnResult;

import java.util.List;

/**
 * xx.iverson.listening_manager.service.AudioFileService
 * 描述：
 * on 2025/10/17-上午9:04
 *
 * @author weijx
 */

public interface AudioFileService {

    // 查询所有听力文件
    ReturnResult<List<AudioFile>> getAllAudioFiles();

    // 根据ID查询听力文件
    ReturnResult<AudioFile> getAudioById(Integer audioId);

    // [修改] 原方法重命名，使其职责更清晰
    ReturnResult<List<AudioFile>> getAudioByLevel2CategoryId(Integer level2CategoryId);

    // [新增] 根据一级分类ID获取文件
    ReturnResult<List<AudioFile>> getAudioByLevel1CategoryId(Integer level1CategoryId);

    // 上传听力文件
    ReturnResult<AudioFile> uploadAudio(MultipartFile file, AudioFile audioFile);

    // 更新听力文件信息
    ReturnResult<Boolean> updateAudioInfo(AudioFile audioFile);

    // 删除听力文件
    ReturnResult<Boolean> deleteAudio(Integer audioId);

    // 播放听力文件
    ReturnResult<String> playAudio(Integer audioId);

    // 下载听力文件
    ReturnResult<String> downloadAudio(Integer audioId);

    // 获取文件访问URL
    String getFileAccessUrl(String storagePath);

    // 搜索听力文件
    List<AudioFile> searchAudio(String keyword);
}